/**
 * 文件名    ： HmacSha256.java
 * 版权       : XX科技有限公司。
 * 描述       : <描述>
 * 修改时间：2019年2月18日
 * 修改内容：<修改内容>
 */
package com.example.demo.application.common.encrypt;

import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.UUID;

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;

/**
 * <功能> hmac_sha256不可逆加密
 * 
 * @author 87431
 * @version [版本号，2019年2月18日]
 * @see [相关类/方法]
 * @since [产品/模块版本]
 */
public class HmacSha256 {

	/**
	 * sha256_HMAC加密
	 * 
	 * @param message 消息
	 * @param secret  秘钥
	 * @return 加密后字符串
	 * @throws NoSuchAlgorithmException
	 * @throws InvalidKeyException
	 */
	public final static byte[] hmac_sha256(String message, String secret) throws NoSuchAlgorithmException, InvalidKeyException {
		byte[] bytes = null;
		Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
		SecretKeySpec secret_key = new SecretKeySpec(secret.getBytes(), "HmacSHA256");
		sha256_HMAC.init(secret_key);
		bytes = sha256_HMAC.doFinal(message.getBytes());
		return bytes;
	}
	
	public static void main(String[] args) throws InvalidKeyException, NoSuchAlgorithmException {
		String salt = UUID.randomUUID().toString().replace("-","");
		System.out.println(salt);
		System.out.println(Byte2String.byteArrayToHexString(HmacSha256.hmac_sha256("chen1991", salt)));
	}

}
